4cdede75967d6c7384622b28b9f3c999dc5f9c70,core/kernel/debug/source/jetbrains/mps/debug/evaluation/Evaluator.java,Evaluator,invokeStatic,#String#String#String#Object#,62
Before Change
@Nullable
public IValueProxy invokeStatic(String className, String name, String jniSignature, Object... args) {
List<ReferenceType> classes = getVM().classesByName(className);
if (classes.size() == 0) {
LOG.error("could not find class " + className);
return null;
}
ClassType referenceType = (ClassType) classes.get(0);
List<Method> methods = referenceType.methodsByName(name, jniSignature);
if (methods.size() == 0) {
LOG.error("could not find method " + name + " with signature " + jniSignature + " in " + className);
return null;
}
Method method = methods.get(0);
List<Value> argValues = MirrorUtil.getValues(getThreadReference(), args);
Value result;
try {
result = referenceType.invokeMethod(getThreadReference(), method, argValues, 0);
} catch (Throwable t) {
LOG.error("method invocation failed", t);
return null;
}
return MirrorUtil.getValueProxy(result, getThreadReference());
}
After Change
@NotNull
protected IValueProxy invokeStatic(String className, String name, String jniSignature, Object... args) throws EvaluationException {
final ClassType referenceType = findClassType(className, getVM());
final Method method = findMethod(referenceType, name, jniSignature);
final List<Value> argValues = MirrorUtil.getValues(getThreadReference(), args);